home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / demos / icse / seros.ex < prev   
Text File  |  1999-09-16  |  4KB  |  82 lines

  1. //                sero.bas : demo de icse
  2. //  calcul coefficients optimaux du modele simplifie 5ht-plaquette
  3. //  **************************************************************
  4. //
  5. // les doubles slash introduisent des commentaires
  6. //
  7. // contexte : tue les variables de nom reserve
  8. exec('icse.contexte');
  9. t0=0.d0;    // instant initial
  10. tf=18.d1;   // instant final
  11. dti=1;  // premier pas de temps
  12. dtf=2;   // second pas de temps
  13. ermx=1.d-9; // test d'arret absolu sur la valeur du second membre dans
  14.             // la resolution de l'etat
  15. iu=[0,0,1]; //  iu   :indications sur la structure du controle
  16.     //    iu(1)=1 si l'etat initial depend du controle constant,0 sinon
  17.     //    iu(2)=1 si l'etat initial depend du controle variable,0 sinon
  18.     //    iu(3)=1 si le second membre depend du controle constant,0 sinon
  19. nuc=7;      // nombre de parametres independants du temps
  20. nuv=0;      // nombre de parametres dependants du temps
  21. ilin=2;     // indicateur de linearite :
  22.        // 0 pour un systeme non affine
  23.        // 1 pour un systeme affine dont la partie lineaire n'est pas autonome
  24.        // ilin=2 pour un systeme affine dont la partie lineaire est autonome
  25. nti=80;   //nombre de pas de temps correspondant a dti (premier pas de temps)
  26. ntf=50;   // nombre de pas de temps correspondant a dtf (second pas de temps)
  27.             // si l'on utilise un seul pas de temps,on doit prendre ntf=0
  28. ny=4;       // dimension de l'etat a un instant donne
  29. nea=0;      // nombre d'equations algebriques (eventuellement nul)
  30. itmx=10;    // nombre maximal d'iterations dans la resolution de
  31.             // l'equation d'etat discrete a un pas de temps donne
  32. nex=8;      // nombre d'experiences effectuees
  33. nob=2;      // dimension du vecteur des mesures pour une experience donnee
  34.             // en un instant donne
  35. ntob=9;     // nombre d'instants de mesure pour une experience donnee
  36. ntobi=6;    // nombre d'instants de mesure correspondant a dti (premier
  37.             // pas de temps)
  38. // ne pas modifier l'instruction suivante
  39. nu=nuc+nuv*(nti+ntf+1); // dimension du vecteur des parametres de controle
  40. //
  41. //  uc(1,nuc)          :controle constant
  42. ucref=[2.d-4,1.d-3,1.d-2,5.d-3,2.d-2,1.5d-1,3.d-2];
  43. uc=.1*ucref;
  44. //  uv(1,nuv*(nti+ntf)):controle variable
  45. //if nuv>0, uv(1,nuv*(nti+ntf))=0; end;
  46. //  itu(1,nitu)        :tableau de travail entier reserve a
  47. //                      l'utilisateur
  48. itu=[0];
  49. //  dtu(1,ndtu)        :tableau de travail double precision reserve
  50. //                      a l'utilisateur
  51. dtu=[0.d0];
  52. //
  53. //  y0(ny)              :etat initial
  54. //  (inutile si iu(1) ou iu(2) est non nul)
  55. y0=[4.d1,0.d0,0.d0,0.d0];
  56. //  tob(1,ntob)        :instants de mesure (compatibilite avec ntob
  57. //                      et ntobi)
  58. tob=[1.d1,2.d1,3.d1,4.d1,6.d1,8.d1,1.1d2,1.6d2,1.8d2];
  59. binf=1.d-17*ones(1,nu);//  borne inf des parametres
  60. bsup=1.d1*ones(1,nu);// borne sup des parametres
  61. //
  62. //  termes utiles pour une dynamique lineaire ou une observation quadratique
  63. // b(1,ny)=0;        // terme constant d'une dynamique lineaire
  64. // fy(ny,ny)=0;      // derivee de la dynamique par rapport a l'etat
  65. // fu(ny,nuc+nuv)=0; // derivee de la dynamique par rapport au controle
  66. obs=[0,1,1,1;0,1,0,1]; // matrice d'observation obs(nob,ny)
  67. //
  68. //  don(nex*ntob*nob)  :mesures prealablement entrees dans le fichier
  69. //                      sero.mes.Il s'agit de donnees simulees avec
  70. //                      uc=[2.d-4,1.d-3,1.d-2,1.d-7,1.d-6,1.d-9,1.d-7]
  71. don=read('sero.mes',1,nex*ntob*nob,'(5d15.7)');
  72. //
  73.  
  74. nap=20;     // nombre d'appels du simulateur
  75. imp=2;      // niveau de debug pour optim
  76. large=100;  // taille de nu au dela de laquelle on choisit un optimiseur
  77.        // pour les problemes de grande taille (alg='gc' dans l'appel de optim)
  78. //
  79. exec('icseinit.ex');
  80. [co,u,g,itv,dtv]=icse(u,'icsest',nap,imp);
  81.  
  82.